Object oriented programming involves the creation, manipulation, and collection of objects. Objects may include anything that can be manipulated by a programming language. For example, an object may include a class instance of any object oriented programming language. An object is defined by attributes and functions and may be part of a collection of objects. For example, a web page contains objects of various types, such as a header object, a list object, an image object, etc. Each object includes attributes, such as a name or a font, and properties, which are similar to attributes but may include functions for data validation and active updating. Each object is partially defined by its collection of attributes and properties. Objects of different types may have attributes and properties in common and attributes and properties that differ.
Many objects used in web pages and data exchange include name/value pairs to describe attributes. For example, a web page may contain an image tag comprising “<img src=“smiley.img” alt=“a smiley face”>. The image object of this example has two attributes; an “src” attribute with a value of “smiley.img” and an alt attribute with a value of “a smiley face.” Likewise, objects created by tools such as extensible markup language (XML), may contain attribute name/value pairs. For example, an XML object may contain an invoice object such as “<invoice src=“July2011.csv” discount=“10?>. The invoice object of this example as has two attributes; a src attribute with a value of July2011.csv and a discount attribute with a value of 10.
Organizations may desire to determine objects that exhibit certain characteristics from a collection of diverse objects. For example, an organization may desire to locate all objects associated with a web page that have a specific word in the name or a specific parameter passed to a property. For example, objects having certain characteristics may be more likely to exhibit malicious behavior, such as malware. Furthermore, organizations may desire to know not only what objects match a particular pattern, but also what elements of the pattern the object matches. Moreover, the organizations may desire the ability to dynamically define the attributes and properties that comprise a pattern.
Currently, tools exist to locate patterns in a class of objects of the same type, but not for locating patterns in objects of different types, such as those common in collections of objects created by dynamically typed languages. Furthermore, these tools must be recompiled to process new patterns because the patterns are fixed and the tools cannot handle dynamic rule processing. Moreover, current tools indicate only whether an object matches a pattern and not what conditions caused the object to match a pattern.
Therefore, it is desirable to introduce tools to facilitate the identification of objects of different types that match a pattern, to identify the conditions that an object satisfied to match a pattern, and to allow dynamic description of the patterns, including the rules and conditions that define the pattern.